From: Ray Strode Date: Thu, 18 Jul 2019 18:49:30 +0000 (-0400) Subject: appDisplay: Stop watching FolderIcon parent view when destroyed X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~839^2^2~142 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=49260a85ad9d99e35b4c85547928d3bc5bec489e;p=gnome-shell.git appDisplay: Stop watching FolderIcon parent view when destroyed When a FolderIcon is opened, it asks the parent view to allocate space for it, which takes time. Eventually, the space-ready signal is emitted on the view and the icon can make use of the new space with its popup. If the icon gets destroyed in the interim, though, space-ready signal handler still fires. This commit disconnects the signal handler so it doesn't get called on a destroyed icon. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/628 --- diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 60e84d73e..d361ec16c 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -1155,6 +1155,11 @@ var FolderIcon = class FolderIcon { onDestroy() { this.view.actor.destroy(); + if (this._spaceReadySignalId) { + this._parentView.disconnect(this._spaceReadySignalId); + this._spaceReadySignalId = 0; + } + if (this._popup) this._popup.actor.destroy(); } @@ -1226,8 +1231,9 @@ var FolderIcon = class FolderIcon { } _openSpaceForPopup() { - let id = this._parentView.connect('space-ready', () => { - this._parentView.disconnect(id); + this._spaceReadySignalId = this._parentView.connect('space-ready', () => { + this._parentView.disconnect(this._spaceReadySignalId); + this._spaceReadySignalId = 0; this._popup.popup(); this._updatePopupPosition(); });